============================================================================ [LISTING 1 - HELLO.CPP] // hello.cpp RHS 7/15/92 #include LPSTR wintitle = "HELLO"; LPSTR winmessage ="Hello, world!"; void FAR PASCAL HelloMessage(LPCSTR wintitle) { MessageBox(NULL,winmessage,wintitle,MB_OK); } int PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { HelloMessage(wintitle); return 0; } ============================================================================ [LISTING 2 - HELLO2.CPP] // hello2.cpp RHS 7/15/92 #include #include"hello.h" LPSTR wintitle = "HELLO2"; int PASCAL WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { HelloMessage(wintitle); return 0; } ============================================================================ [LISTING 3 - HELLOLIB.CPP] // hellolib.cpp RHS 7/15/92 #include #include"hello.h" #if defined(_MSC_VER) extern "C" int FAR PASCAL LibMain(HINSTANCE,WORD,WORD,LPSTR) { return TRUE; } extern "C" int FAR PASCAL _WEP(int) { return TRUE; } #else int FAR PASCAL LibMain(HINSTANCE,WORD,WORD,LPSTR) { return TRUE; } int FAR PASCAL WEP(int) { return TRUE; } #endif LPSTR winmessage = "Hello, world!"; void FAR PASCAL _export HelloMessage(LPSTR wintitle) { MessageBox(NULL,winmessage,wintitle,MB_OK); } ============================================================================ [LISTING 4 - MAKE FILES] #Borland C++ Make file: all: hello.exe hellolib.dll hellolib.lib hello2.exe hello.exe: hello.cpp bcc -WS -DSTRICT hello.cpp hellolib.dll: hellolib.def hellolib.cpp hello.h bcc -WD -DSTRICT hellolib.cpp hellolib.lib: hellolib.dll implib hellolib.lib hellolib.dll hello2.exe: hello2.cpp hellolib.lib hello.h bcc -WS -DSTRICT hello2.cpp hellolib.lib #Microsoft C++ 7.0 Make file: all: hello.exe hellolib.dll hellolib.lib hello2.exe hello.exe: hello.cpp cl /GA /DSTRICT hello.cpp hello.def hellolib.dll: hellolib.def hellolib.cpp hello.h cl /c /GD /DSTRICT hellolib.cpp link hellolib,hellolib.dll,null,libw sdllcew,hellolib.def; hellolib.lib: hellolib.dll implib hellolib.lib hellolib.dll hello2.exe: hello2.cpp hellolib.lib hello.h cl /c /GA /DSTRICT hello2.cpp link hello2,hello2.exe,null,libw slibcew hellolib,hello2.def; ============================================================================ [LISTING 5 - MODULE DEFINITION (.DEF) FILES] ; HELLO.DEF NAME HELLO DESCRIPTION 'Hello' STUB 'winstub.exe' EXETYPE WINDOWS HEAPSIZE 8192 STACKSIZE 8192 ; HELLOLIB.DEF LIBRARY HELLOLIB DESCRIPTION 'Hello Library' STUB 'winstub.exe' EXETYPE WINDOWS CODE MOVEABLE PRELOAD DATA SINGLE MOVEABLE PRELOAD HEAPSIZE 8192 ; HELLO2.DEF NAME HELLO2 DESCRIPTION 'Hello2' STUB 'winstub.exe' EXETYPE WINDOWS HEAPSIZE 8192 STACKSIZE 8192 ============================================================================ [LISTING 6 - HELLO.H] // hello.h RHS 7/15/92 #if defined(_WINDLL) || (__DLL__) #define EXPORT _export #else #define EXPORT #endif extern void FAR PASCAL EXPORT HelloMessage(LPSTR wintitle); =====================================================================